/* 
CommonJS的对象模块: 内部是基于node进行打包处理的
*/
const { resolve } = require('path');// resolve解析拼接路径

// 导入ESLint插件, 插件是一个构造函数
const ESLintPlugin = require('eslint-webpack-plugin');

module.exports = {
    //入口文件,指定入口文件的相对路径
    entry: './src/main.js',

    //出口文件
    output: {
        // path:`${__dirname}/build`, //方式一 指定所有打包产生文件的根目录
        path: resolve(__dirname, 'build'), //方式二，利用内部自带的路径获取
        filename: 'js/bundle.js' //指定打包生成的js文件名(可以带路径)
    },

    //模式
    mode: 'development',

    // 配置 loader
    module: {
        rules: [
            // 配置 css 文件处理
            {
                test: /\.css$/, // 处理css文件
                use: [
                    "style-loader",		// 将 CSS 生成 style 标签插入 HTML 中
                    "css-loader" 		// 将 CSS 转为 CommonJS 的模块

                ]
            },
            //打包less文件
            {
                test: /\.less$/, // 处理css文件
                use: [
                    "style-loader",		// 将 CSS 生成 style 标签插入 HTML 中
                    "css-loader",		// 将 CSS 转为 CommonJS 的模块
                    "less-loader"
                ]
            },
            {
                test: /\.js$/, // 处理js文件
                exclude: /(node_modules)/, //不对此类文件夹中的js文件进行处理
                use: {//指定使用的loader
                    loader: "babel-loader",
                    options: {//针对当前loader的配置
                        presets: [
                            // '@babel/preset-env' //这是单独配置的语法
                          [  '@babel/preset-env',
                            {
                                useBuiltIns: 'usage', //只打包使用的ES6新API的实现代码
                                corejs: { version: 2 } //指定core-js的版本号为2
                            }
                        ] //babel预设包
                    ],
                        plugins: [] //babel插件包
                    }
                }
            }
        ]
    },
    // 配置进行ESlint检查的插件,检查js代码
    plugins: [
        new ESLintPlugin()
    ]

} 